#!/bin/sh

. /usr/share/libubox/jshn.sh

case "$1" in
	list)
		printf '{ "getBatteryStatus": {} }'
	;;
	call)
		case "$2" in
			getBatteryStatus)
				json_init

				eval $(/bin/ubus call system board 2>/dev/null | /usr/bin/jsonfilter -e 'MODEL=@.model')
				json_add_object "$MODEL"

				if [ -f /usr/sbin/i2cset ] && [ -f /usr/sbin/i2cget ]; then
					json_add_boolean valid 1
					if [ $(i2cset -y 0 0x0a 0x0a 0x01 && i2cget -y 0 0x0a 0x0a) = 0x40 ]; then
						json_add_boolean charging 1
					else
						json_add_boolean charging 0
					fi
					json_add_int percentage $(i2cset -y 0 0x0a 0x0a 0x10 && i2cget -y 0 0x0a 0x0a | xargs printf %d)
				else
					json_add_boolean valid 0
					if [ ! -f /usr/sbin/i2cset ]; then
						json_add_string message "Need i2cset"
					else
						json_add_string message "Need i2cget"
					fi
				fi

				json_close_object
				json_dump
			;;
		esac
	;;
esac
